#pragma once

#include "../Component.h"
#include "../ComponentManager.h"
#include "../../XNA.h"

class CmpDrawable2D : Component
{
	DECLARE_COMPONENT(CmpDrawable2D)
public:
	void Initialize();
	void Progress();
	void Dispose();
	ISprite* operator =(ISprite* pSprite) { mSprite = pSprite; return mSprite; };
	Vector3 operator =(Vector3 position) { mPosition = position; return mPosition; };
	Vector3 operator +(Vector3 position){ return mPosition + position; };
	void operator +=(Vector3 position){ this->mPosition += position; };
	Vector3 operator -(Vector3 position){ return mPosition - position; };
	void operator -=(Vector3 position){ this->mPosition -= position; };

	ISprite*& GetSprite() { return mSprite; };
	Vector3 *GetPosition() { return &mPosition; };

private:
	Vector3 mPosition;
	ISprite* mSprite;
};


class CmpDrawable3D : Component
{
	DECLARE_COMPONENT(CmpDrawable3D)
public:
	void Initialize();
	void Progress();
	void Dispose();
	IModel* operator =(IModel* pModel) { mModel = pModel; return mModel; };
	Vector3 operator =(Vector3 position) { mPosition = position; return mPosition; };
	Vector3 operator +(Vector3 position){ return mPosition + position; };
	void operator +=(Vector3 position){ this->mPosition += position; };
	Vector3 operator -(Vector3 position){ return mPosition - position; };
	void operator -=(Vector3 position){ this->mPosition -= position; };

	IModel* GetModel() { return mModel; };
	Vector3 *GetPosition() { return &mPosition; };

private:
	Vector3 mPosition;
	IModel* mModel;
};
